home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Software of the Month Club 2000 October
/
Software of the Month - Ultimate Collection Shareware 277.iso
/
pc
/
PROGRAMS
/
UTILITY
/
WINLINUX
/
DATA1.CAB
/
programs_-_include
/
NET
/
IRDA
/
IROBEX.H
< prev
next >
Wrap
C/C++ Source or Header
|
1999-09-17
|
3KB
|
115 lines
/*********************************************************************
*
* Filename: irobex.h
* Version: 0.8
* Description:
* Status: Experimental.
* Author: Dag Brattli <dagb@cs.uit.no>
* Created at: Sat Jul 4 22:43:57 1998
* Modified at: Thu Mar 11 16:11:54 1999
* Modified by: Dag Brattli <dagb@cs.uit.no>
*
* Copyright (c) 1998 Dag Brattli, All Rights Reserved.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* Neither Dag Brattli nor University of Troms° admit liability nor
* provide warranty for any of this software. This material is
* provided "AS-IS" and at no charge.
*
********************************************************************/
#ifndef IROBEX_H
#define IROBEX_H
#include <linux/kernel.h>
#include <linux/types.h>
#include <linux/skbuff.h>
#include <linux/miscdevice.h>
#include <net/irda/timer.h>
#include <net/irda/qos.h>
#include <net/irda/irmod.h>
#define LOW_THRESHOLD 4
#define HIGH_THRESHOLD 8
#define IROBEX_MAX_QUEUE 12
/* Small structure to be used by the IOCTL call */
struct irobex_ioc_t {
__u32 daddr;
};
#define IROBEX_IOC_MAGIC 'k'
#define IROBEX_IOCSCONNECT _IOW(IROBEX_IOC_MAGIC, 1, 4)
#define IROBEX_IOCSDISCONNECT _IOW(IROBEX_IOC_MAGIC, 2, 4)
#define IROBEX_IOC_MAXNR 2
#define IROBEX_MAX_HEADER (TTP_HEADER+LMP_HEADER+LAP_HEADER)
typedef enum {
OBEX_IDLE, /* Doing nothing */
OBEX_DISCOVER, /* Trying to discovery remote device */
OBEX_QUERY, /* Querying remote LM-IAS */
OBEX_CONN, /* Trying to connect to remote device */
OBEX_DATA, /* Data transfer ready */
} OBEX_STATE;
struct irobex_cb {
QUEUE queue; /* Must be first! */
int magic; /* magic used to detect corruption of the struct */
OBEX_STATE state; /* Current state */
__u32 saddr; /* my local address */
__u32 daddr; /* peer address */
unsigned long time_discovered;
__u32 ckey; /* IrLMP client handle */
__u32 skey; /* IrLMP service handle */
char devname[9]; /* name of the registered device */
struct tsap_cb *tsap;
int eof;
__u8 dtsap_sel; /* remote TSAP address */
__u8 stsap_sel; /* local TSAP address */
int irlap_data_size;
struct miscdevice dev;
int count; /* open count */
struct sk_buff_head rx_queue; /* Receive queue */
struct wait_queue *read_wait;
struct wait_queue *write_wait;
struct fasync_struct *async;
struct timer_list watchdog_timer;
LOCAL_FLOW tx_flow;
LOCAL_FLOW rx_flow;
};
int irobex_init(void);
void irobex_watchdog_timer_expired( unsigned long data);
inline void irobex_start_watchdog_timer( struct irobex_cb *self, int timeout)
{
irda_start_timer( &self->watchdog_timer, timeout, (unsigned long) self,
irobex_watchdog_timer_expired);
}
extern struct irobex_cb *irobex;
#endif